package prototype.fromKanYun.deep;

import java.io.IOException;

public class Test  {
    public static void main(String[] args) throws IOException,
            ClassNotFoundException {
        Prototype prototype = new Prototype(20);
        prototype.setArray(new int[] {1,2,3});
        Prototype cloneProto = (Prototype) prototype.deepClone();
        /**
         * 通过打印可以看到：prototype cloneProto 这两个同一类型的变量指向的是两个不同的内存地址
         * 说明克隆成功
         */
        System.out.println("prototype = " + prototype);
        System.out.println("cloneProto = " + cloneProto);

        /**
         * 两个对象的引用类型变量array指向的是不同的内存地址
         * 说明对象进行了完全彻底的复制
         */
        System.out.println("prototype.getArray() = " + prototype.getArray());
        System.out.println("cloneProto.getArray() = " + cloneProto.getArray());

        /**
         * 当然我们也可以试着打印一下引用变量的内容
         * 内容{1,2,3}没有改变，改变的只是引用变量指向的内存地址
         */
        int[] proArray = prototype.getArray();
        int[] cloneProtoArray = cloneProto.getArray();
        for (int p : proArray) {
            System.out.print(p + "\t");
        }
        System.out.println();
        for (int p : cloneProtoArray) {
            System.out.print(p + "\t");
        }
    }
}
